前面提到了Scala的建構式,當我們要對主建構式裡的參數定義一些規定時,我們可以使用require
假設一個情況:
有一個Rational類別,需要兩個整數參數分別為分子m和分母n,輸出m/n。
因為分母不能為0
class Rational(m: Int, n: Int){
require(n != 0)
override def toString = m + "/" + n
}
require(n != 0)
是在判斷輸入的分母為不為0
require會接收一個Boolean參數,如果傳入的值為true
,require
會正常回傳。
如果值為false,require
會丟出IllegalArgumentException
來阻止物件繼續被建構。
一般類別裡定義的成員都是公有的(public),如果想要讓成員不能在類別外不能被訪問就要設為private
。private
只能從類別定義內訪問,類別外訪問不到。
class Person:
private val age = 20
private val x = 0
假設我們要定義一個有理數類別
裡面有個有理數相加的方法,定義為:+
另外有個有理數相乘的方法,定義為:*
那我們可以把這個有理數類別寫成這樣
class Rational(m: Int, n: Int){
require(n != 0)
val numer: Int = m
val denom: Int = n
def this(n: Int) = this(m, 1)
def +(that: Rational): Rational =
new Rational(numer * that.denom + that.numer * denom, denom * that.denom)
def *(that: Rational): Rational =
new Rational(numer * that.numer, denom * that.denom)
override def toString = numer + "/" + denom
}
定義好後我們就可以寫成這樣
val x = new Rational(2, 3)
val y = new Rational(4, 5)
println(x + y) // output: 22/15
今天就講到這邊 明天來介紹Scala其他功能